package kr.pe.johnkim.app.mobile.rest.dao;

import kr.pe.johnkim.app.domain.MyHistoryItem;

import java.util.List;

/**
 * My History 아이템 관련 기능들을 정의한 인터페이스이다.
 * 
 * @author : johnkim <cale9797@gmail.com / Simple.ly Inc,>
 * @Date : 11. 12. 26
 */
public interface MyHistoryItemDao {
    /**
     * 아이템 중복 등록을 확인 한다.
     * 
     * @param myHistoryItem
     * @return MyHistoryItem
     */
    public MyHistoryItem checkDuplication(MyHistoryItem myHistoryItem);

    /**
     * 아이템을 등록 한다.
     * 
     * @param myHistoryItem
     * @return
     */
    public boolean registerItem(MyHistoryItem myHistoryItem);

    /**
     * 아이템 내용을 가져 온다.
     * 
     * @param myHistoryItem
     * @return
     */
    public MyHistoryItem selectItem(MyHistoryItem myHistoryItem);

    /**
     * 아이템 목록을 가져 온다.
     * 
     * @param myHistoryItem
     * @return List<MyHistoryItem>
     */
    public List<MyHistoryItem> selectItemList(MyHistoryItem myHistoryItem);

    /**
     * Category 의 아이템 목록을 가져 온다.
     * 
     * @param myHistoryItem
     * @return
     */
    public List<MyHistoryItem> selectItemListForCategory(MyHistoryItem myHistoryItem);

    /**
     * 아이템 내용을 수정 한다.
     * 
     * @param myHistoryItem
     * @return True or False
     */
    public boolean updateItem(MyHistoryItem myHistoryItem);

    /**
     * 아이템을 비활성화 한다.
     * 
     * @param myHistoryItem
     * @return
     */
    public boolean updateDeactivateItem(MyHistoryItem myHistoryItem);

    /**
     * 한식 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForKoreanFoodCategory(MyHistoryItem myHistoryItem);

    /**
     * 중식 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForChineseFoodCategory(MyHistoryItem myHistoryItem);

    /**
     * 양식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    public void registerItemListForWesternFoodCategory(MyHistoryItem myHistoryItem);

    /**
     * 간식 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForSnackCategory(MyHistoryItem myHistoryItem);

    /**
     * 일식 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    public void registerItemListForJapaneseFoodCategory(MyHistoryItem myHistoryItem);

    /**
     * 커피 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForCoffeeCategory(MyHistoryItem myHistoryItem);

    /**
     * 음료수 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    public void registerItemListForDrinkCategory(MyHistoryItem myHistoryItem);

    /**
     * 주류 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForAlcoholCategory(MyHistoryItem myHistoryItem);

    /**
     * 차 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForTeaCategory(MyHistoryItem myHistoryItem);

    /**
     * 혼자 놀기 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForPlayAloneCategory(MyHistoryItem myHistoryItem);

    /**
     * 유흥 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForNightlifeCategory(MyHistoryItem myHistoryItem);

    /**
     * 놀이 공간 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    public void registerItemListForPlayPlaceCategory(MyHistoryItem myHistoryItem);

    /**
     * 과목 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForSubjectsCategory(MyHistoryItem myHistoryItem);

    /**
     * 스터디 공간 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForStudyPlaceCategory(MyHistoryItem myHistoryItem);

    /**
     * 공부 방법 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForStudyKnowHowCategory(MyHistoryItem myHistoryItem);

    /**
     * 친구 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForFriendCategory(MyHistoryItem myHistoryItem);

    /**
     * 애인 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForLoverCategory(MyHistoryItem myHistoryItem);

    /**
     * 고객 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForCustomerCategory(MyHistoryItem myHistoryItem);

    /**
     * 모임 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForGatheringCategory(MyHistoryItem myHistoryItem);

    /**
     * 영화 Category 에 해당 하는 item 목록을 등록 한다.
     *
     * @param myHistoryItem
     */
    public void registerItemListForMovieCategory(MyHistoryItem myHistoryItem);

    /**
     * 공연 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForPerformanceCategory(MyHistoryItem myHistoryItem);

    /**
     * 여행 Category 에 해당 하는 item 목록을 가져 온다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForTravelCategory(MyHistoryItem myHistoryItem);

    /**
     * 독서 Category 에 해당 하는 item 목록을 가져 온다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForReadingCategory(MyHistoryItem myHistoryItem);

    /**
     * 성적 Category 에 해당 하는 item 목록을 가져 온다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForAchievementCategory(MyHistoryItem myHistoryItem);

    /**
     * 과제 Categgory 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForChallengeCategory(MyHistoryItem myHistoryItem);

    /**
     * 수업 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForClassCategory(MyHistoryItem myHistoryItem);

    /**
     * 방문 고객수 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForVisitCustomerCategory(MyHistoryItem myHistoryItem);

    /**
     * 퇴근 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForGoHomeCategory(MyHistoryItem myHistoryItem);

    /**
     * 휴일 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForHolidayCategory(MyHistoryItem myHistoryItem);

    /**
     * 팀워크 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForTeamWorkCategory(MyHistoryItem myHistoryItem);

    /**
     * 집안일 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForHouseWorkCategory(MyHistoryItem myHistoryItem);

    /**
     * 육아 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForChildCareCategory(MyHistoryItem myHistoryItem);

    /**
     * 차량 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForCarCategory(MyHistoryItem myHistoryItem);

    /**
     * 헬쓰 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForHealthCategory(MyHistoryItem myHistoryItem);

    /**
     * 구기 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForBallCategory(MyHistoryItem myHistoryItem);

    /**
     * 레저 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForLeisureCategory(MyHistoryItem myHistoryItem);

    /**
     * 질병 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForDiseaseCategory(MyHistoryItem myHistoryItem);

    /**
     * 치료 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForTreatmentCategory(MyHistoryItem myHistoryItem);

    /**
     * 건강 보조 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForHealthSupportCategory(MyHistoryItem myHistoryItem);

    /**
     * 활동 시간 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForPlayHourCategory(MyHistoryItem myHistoryItem);

    /**
     * 일과 시간 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForWorkHourCategory(MyHistoryItem myHistoryItem);

    /**
     * 이동 시간 Catgegory 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForTransportHourCategory(MyHistoryItem myHistoryItem);

    /**
     * 피부 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForSkinCareCategory(MyHistoryItem myHistoryItem);

    /**
     * 모발 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForHairCareCategory(MyHistoryItem myHistoryItem);

    /**
     * 손발톱 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForNailCareCategory(MyHistoryItem myHistoryItem);

    /**
     * 개인 위생 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForPersonalHygieneCategory(MyHistoryItem myHistoryItem);

    /**
     * 옷 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForClothCategory(MyHistoryItem myHistoryItem);

    /**
     * 악세사리 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForAccessoriesCategory(MyHistoryItem myHistoryItem);

    /**
     * 속옷 Category 에 해당 하는 item 목록을 등록 한다.
     * 
     * @param myHistoryItem
     */
    public void registerItemListForUnderWareCategory(MyHistoryItem myHistoryItem);
}

